#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>

#include "TADPersona.h"
#include "TratFicheros.h"

Persona PedirPersona()
{
	Persona P;

	P.NomPersona = PedirNombre();
	P.DNI = PedirNIF();
	scanf("%[^\n]",P.DNI);
	flushall();
	printf("\nIntroduzca Edad: ");
	scanf("%hu",&P.Edad);
	P.Direccion = PedirDireccionReal();
	printf("\nIntroduzca la ocupacion <1> Trabajador y <2> Directivo: ");
	scanf("%i",&P.EsTrabDir);
	P.DatosOcup=PedirOcup(P.EsTrabDir);
	flushall();
	return(P);
}

Persona GenerarPersona (Nombre N, char D[],unsigned short E,Ocup O, int Tipo, Direcc Dir)
{
   Persona P;

   P.NomPersona = N;
   P.DNI=GenerarNIF(D);
   P.Edad=E;
   P.Direccion=Dir;
   P.EsTrabDir = Tipo;
   P.DatosOcup = CrearOcup(Tipo,O.EsTra,O.EsDirec);
   return(P);
}

void VisualizaPersona(Persona P)
{
	VisualizarNIF(P.DNI);
	VisualizaNombre(P.NomPersona);
	printf("\nEdad: %hu\n",P.Edad);
	VisualizarDireccionReal(P.Direccion);
    PintarOcup(P.EsTrabDir,P.DatosOcup);
	printf("\n\nPresione una tecla para seguir");
	getch();
	system("cls");
}

void ModificarEdad (Persona P,unsigned short Edad)
{
	P.Edad=Edad;
}


int CompararPersona(Persona P1, Persona P2)
{
  
	if (CompararNIF(P1.DNI, P2.DNI)==1)
	{
		return(1);
	}
	else
	{
		return(2);
	}
}

void CopiarPersona(Persona *P1 , Persona P2)
{
	CopiarNombre(&P1->NomPersona,P2.NomPersona);
	CopiarNIF(&P1->DNI, P2.DNI);
	P1->Edad=P2.Edad;
	CopiarDireccionReal(&P1->Direccion,P2.Direccion);
	if (P2.EsTrabDir==1)
	{
		CopiarTrabajador(&P1->DatosOcup.EsTra,P2.DatosOcup.EsTra);
	}
	else
	{
		CopiarDirec(&P1->DatosOcup.EsDirec,P2.DatosOcup.EsDirec);
	}

	//Finalizar CopiarPersona
}

void ArchivoAPersona(Persona *Pers, FILE *fichero)
{
	char DniArch[10],Edad[2], EsTrabDirArch[2];

	//Extraer Nombre y Apellidos
	FicheroANombre(&Pers->NomPersona, fichero);
	
	//Extraer DNI
	ExtraerFichero(DniArch, fichero);
	Pers->DNI=GenerarNIF(DniArch);

	//Extraer Edad
	ExtraerFichero(Edad, fichero);
	Pers->Edad=atoi(Edad);

	//Extraemos un integer para verificar si es Trabajador o Directivo
	ExtraerFichero(EsTrabDirArch, fichero);
	Pers->EsTrabDir=atoi(EsTrabDirArch);

	//Extraemos oficio, dependiendo de si es Trabajador o Directivo
	if (Pers->EsTrabDir==1)
	{
		ArchivoATrabajador(&Pers->DatosOcup.EsTra, fichero);
	}
	else
	{
		ArchivoADirec(&Pers->DatosOcup.EsDirec, fichero);
	}

	//Extraemos los datos de la localidad donde vive
	ArchivoADireccionReal(&Pers->Direccion, fichero);


}
